package com.itheima.edu.info.manager.service;

import com.itheima.edu.info.manager.dao.BaseStudentDao;
import com.itheima.edu.info.manager.dao.OtherStudentDao;
import com.itheima.edu.info.manager.dao.StudentDao;
import com.itheima.edu.info.manager.domain.Student;
import com.itheima.edu.info.manager.factory.StudentDaoFactory;

public class StudentService {
    //指挥库管对象进行添加学生动作
    private BaseStudentDao dao = StudentDaoFactory.getStudentDao();

    //业务员中的添加方法
    public boolean addStudent(Student stu) {
        //将库管添加学生的结果返回上一级
        return dao.addStudent(stu);
    }

    public boolean isExists(String id) {
        //指挥库管将数据库中所有的学生信息都查出来
        Student[] stus = dao.findAllStudent();
        //基于标记位思想,先假设本次要查找的数据在系统中没有
        boolean flag = false;
        for (int i = 0; i < stus.length; i++) {
            //只有当前学生对象不为null,并且当前学生对象的学号和要查找的学号一致时,才说明这个学号被占用了这时候修改标记
            if (stus[i] != null && stus[i].getId().equals(id)) {
                flag = true;
            }
        }
        //除了循环直接返回flag
        return flag;
    }

    public Student[] findAllStudent() {
        Student[] allStudent = dao.findAllStudent();
        //标记位思想:先假设allStudent装的全是null
        boolean flag = false;
        for (int i = 0; i < allStudent.length; i++) {
            if (allStudent[i] != null) {
                flag = true;
            }
        }
        if (flag) {
            return allStudent;
        } else {
            return null;
        }
    }

    //业务员中的删除学生功能
    public void deleteStudentById(String delId) {
        //指挥库管执行删除学生的功能
        dao.deleteStudentById(delId);
    }

    public void updateStudent(String updateId, Student newStu) {
        dao.updateStudent(updateId, newStu);
    }
}
